Resumen

Row

Última actualización de datos realizada el 2020-11-10 con base en los datos publicados por el Ministerio de Salud de Costa Rica.

Row

Casos positivos

118,566

Casos activos

44,123 (37.2%)

Casos recuperados

72,941 (61.5%)

Casos fallecidos

1,502 (1.3%)

Row

Hospitalizados

492

En salón

294 (59.8%)

En UCI

198 (40.2%)

Row

Gráfico de variación de las cantidades de casos en el tiempo

Tabla de cantidades de casos en cantones

Casos positivos

Row

Última actualización de datos: 2020-11-10

Row

Casos positivos

118,566

Row

Mapa de casos positivos en cantones

Gráfico de cantones con mayor cantidad de casos positivos

Casos activos

Row

Última actualización de datos realizada el 2020-11-10 con base en los datos publicados por el Ministerio de Salud de Costa Rica.

Row

Casos activos

44,123

Row

Mapa de casos activos en cantones

Gráfico de cantones con mayor cantidad de casos positivos

Casos recuperados

Row

Última actualización de datos realizada el 2020-11-10 con base en los datos publicados por el Ministerio de Salud de Costa Rica.

Casos fallecidos

Row

Última actualización de datos realizada el 2020-11-10 con base en los datos publicados por el Ministerio de Salud de Costa Rica.

---
title: "Estado del COVID-19 en Costa Rica (Priscilla Obando)"
output: 
  flexdashboard::flex_dashboard:
    orientation: rows
    social: menu
    source_code: embed
    vertical_layout: fill    
---

```{r setup, include=FALSE}

#-------------------- Paquetes --------------------

library(flexdashboard)
library(plotly)
library(dplyr)
library(tidyr)
library(sf)
library(leaflet)

#-------------------- Colores ---------------------

color_positivos <- 'blue'
color_activos <- 'red'
color_recuperados <- 'green'
color_fallecidos <- 'violet'

color_nuevos_positivos <- 'pink'

color_hospitalizados <- 'pink'
color_salon <- 'pink'
color_uci <- 'pink'

#--------------------- Íconos ---------------------

icono_positivos <- 'fas fa-stethoscope'
icono_activos <- 'fas fa-user-md'
icono_recuperados <- 'fas fa-user-md'
icono_fallecidos <- 'fas fa-user-md'

icono_nuevos_positivos <- 'fas fa-user-md'

icono_hospitalizados <- 'fas fa-user-md'
icono_salon <- 'fas fa-user-md'
icono_uci <- 'fas fa-user-md'

#--------------- Otros parámetros -----------------

# Separador para lectura de datos CSV
caracter_separador <- ','
```


```{r, include=FALSE}
#--------------- Archivos de datos ----------------

archivo_general_pais <- 'https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/covid19/ms/11_10_CSV_GENERAL.csv'

archivo_positivos_cantones <- 'https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/covid19/ms/11_10_CSV_POSITIVOS.csv'
archivo_activos_cantones <- 'https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/covid19/ms/11_10_CSV_ACTIVOS.csv'
archivo_recuperados_cantones <- 'https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/covid19/ms/11_10_CSV_RECUP.csv'
archivo_fallecidos_cantones <- 'https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/covid19/ms/11_10_CSV_FALLECIDOS.csv'
```

```{r, include=FALSE}
#---------------------- Datos ---------------------

# Data frame de datos generales por país
df_general_pais <- read.csv(archivo_general_pais, sep = caracter_separador)
df_general_pais$FECHA <- as.Date(df_general_pais$FECHA, "%d/%m/%Y")

# Data frame de datos generales por país en la última fecha
df_general_pais_ultima_fecha <- 
  df_general_pais %>%
  filter(FECHA == max(FECHA, na.rm = TRUE))

# Data frame de casos positivos por cantón
df_positivos_cantones_ancho <- read.csv(archivo_positivos_cantones, sep = caracter_separador)
df_positivos_cantones <-
  df_positivos_cantones_ancho %>%
  pivot_longer(cols = c(-cod_provin, -provincia, -cod_canton, -canton), names_to = "fecha", values_to = "positivos")
df_positivos_cantones$fecha <- as.Date(df_positivos_cantones$fecha, "X%d.%m.%Y")

# Data frame de casos positivos por cantón en la última fecha
df_positivos_cantones_ultima_fecha <- 
  df_positivos_cantones %>%
  filter(fecha == max(fecha, na.rm = TRUE)) %>%
  select(cod_canton, positivos)

# Data frame de casos activos por cantón
df_activos_cantones_ancho <- read.csv(archivo_activos_cantones, sep = caracter_separador)
df_activos_cantones <-
  df_activos_cantones_ancho %>%
  pivot_longer(cols = c(-cod_provin, -provincia, -cod_canton, -canton), names_to = "fecha", values_to = "activos")
df_activos_cantones$fecha <- as.Date(df_activos_cantones$fecha, "X%d.%m.%Y")

# Data frame de casos activos por cantón en la última fecha
df_activos_cantones_ultima_fecha <- 
  df_activos_cantones %>%
  filter(fecha == max(fecha, na.rm = TRUE)) %>%
  select(cod_canton, activos)


# Objeto sf de cantones
sf_cantones <- st_read('https://raw.githubusercontent.com/pf0953-programaciongeoespacialr-2020/datos/master/delimitacion-territorial-administrativa/cr/ign/cr_limite_cantonal_ign_wgs84.geojson')

# Objeto sf de casos positivos en cantones en la última fecha
sf_positivos_cantones_ultima_fecha <-
  left_join(sf_cantones, df_positivos_cantones_ultima_fecha, by = c('cod_canton')) %>%
  arrange(desc(positivos))

# Objeto sf de casos activos en cantones en la última fecha
sf_activos_cantones_ultima_fecha <-
  left_join(sf_cantones, df_activos_cantones_ultima_fecha, by = c('cod_canton')) %>%
  arrange(desc(activos))
```

Resumen
=======================================================================
Row {data-height=10}
-----------------------------------------------------------------------
### **Última actualización de datos realizada el `r  df_general_pais_ultima_fecha$FECHA` con base en los [datos publicados por el Ministerio de Salud de Costa Rica](http://geovision.uned.ac.cr/oges/)**.


Row
-----------------------------------------------------------------------

### Casos positivos {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$positivos, big.mark = ","), "", sep = " "), 
         caption = "Total de casos positivos", 
         icon = icono_positivos, 
         color = color_positivos
)
```

### Casos activos {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$activos, big.mark = ","), " (",
                       round(100 * df_general_pais_ultima_fecha$activos / df_general_pais_ultima_fecha$positivos, 1), 
                       "%)", sep = ""), 
         caption = "Total de casos activos",
         icon = icono_positivos, 
         color = color_activos
)
```

### Casos recuperados {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$RECUPERADOS, big.mark = ","), " (",
                       round(100 * df_general_pais_ultima_fecha$RECUPERADOS / df_general_pais_ultima_fecha$positivos, 1), 
                       "%)", sep = ""), 
         caption = "Total de casos recuperados",
         icon = icono_positivos, 
         color = color_recuperados
)
```

### Casos fallecidos {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$fallecidos, big.mark = ","), " (",
                       round(100 * df_general_pais_ultima_fecha$fallecidos / df_general_pais_ultima_fecha$positivos, 1), 
                       "%)", sep = ""), 
         caption = "Total de casos fallecidos",
         icon = icono_positivos, 
         color = color_fallecidos
)
```

Row
-----------------------------------------------------------------------

### Hospitalizados {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$hospital, big.mark = ","), "", sep = " "), 
         caption = "Total de hospitalizados", 
         icon = icono_hospitalizados,
         color = color_hospitalizados
)
```

### En salón {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$salon, big.mark = ","), " (",
                       round(100 * df_general_pais_ultima_fecha$salon / df_general_pais_ultima_fecha$hospital, 1), 
                       "%)", sep = ""), 
         caption = "Hospitalizados en salón",
         icon = icono_salon, 
         color = color_salon
)
```

### En UCI {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$UCI, big.mark = ","), " (",
                       round(100 * df_general_pais_ultima_fecha$UCI / df_general_pais_ultima_fecha$hospital, 1), 
                       "%)", sep = ""), 
         caption = "Hospitalizados en UCI",
         icon = icono_uci, 
         color = color_uci
)
```

Row {data-width=400}
-----------------------------------------------------------------------

### Gráfico de variación de las cantidades de casos en el tiempo
```{r}
plot_ly(data = df_general_pais,
                x = ~ FECHA,
                y = ~ positivos, 
                name = 'Positivos', 
                type = 'scatter',
                mode = 'lines',
                line = list(color = color_positivos)) %>%
  add_trace(y = ~ activos,
                    name = 'Activos',
                    mode = 'lines',
                    line = list(color = color_activos)) %>%
  add_trace(y = ~ RECUPERADOS,
                    name = 'Recuperados',
                    mode = 'lines',
                    line = list(color = color_recuperados)) %>%
  add_trace(y = ~ fallecidos,
                    name = 'Fallecidos',
                    mode = 'lines',
                    line = list(color = color_fallecidos)) %>%  
  layout(title = "",
                 yaxis = list(title = "Cantidad de casos"),
                 xaxis = list(title = "Fecha"),
                 legend = list(x = 0.1, y = 0.9),
                 hovermode = "compare")
```

### Tabla de cantidades de casos en cantones
```{r}
st_drop_geometry(sf_positivos_cantones_ultima_fecha) %>% 
  select(Provincia = provincia, Canton = canton, Positivos = positivos) %>%
  DT::datatable(rownames = FALSE,
                options = list(searchHighlight = TRUE, 
                               language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
                               )
  )
```

Casos positivos
=======================================================================
Row {data-height=1}
-----------------------------------------------------------------------
### **Última actualización de datos: `r  df_general_pais_ultima_fecha$FECHA`**


Row
-----------------------------------------------------------------------

### Casos positivos {.value-box}
```{r}
valueBox(value = paste(format(df_general_pais_ultima_fecha$positivos, big.mark = ","), "", sep = " "), 
         caption = "Total de casos positivos", 
         icon = icono_positivos, 
         color = color_positivos
)
```

Row {data-width=400}
-----------------------------------------------------------------------

### Mapa de casos positivos en cantones
```{r}

paleta_azul <- colorBin(palette = "Blues", 
                        domain = sf_positivos_cantones_ultima_fecha$positivos,
                        bins = 10
               )

leaflet_cantones <- leaflet(sf_positivos_cantones_ultima_fecha) %>% 
  fitBounds(lng1 = -86, lng2 = -82, lat1 = 8, lat2 = 11) %>%
  addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
  addPolygons(fillColor = ~paleta_azul(positivos), stroke=T, fillOpacity = 1,
              color="black", weight=0.2, opacity= 0.5,
              group = "Cantones",
              popup = paste("Provincia: ", sf_positivos_cantones_ultima_fecha$provincia, "
", "Cantón: ", sf_positivos_cantones_ultima_fecha$canton, "
", "Positivos: ", sf_positivos_cantones_ultima_fecha$positivos ) ) %>% addLegend("bottomright", pal = paleta_azul, values = ~positivos, title = "Casos positivos", opacity = 1 ) %>% addLayersControl( baseGroups = c("OpenStreetMap"), overlayGroups = c("Cantones"), options = layersControlOptions(collapsed = TRUE) ) %>% addMiniMap( toggleDisplay = TRUE, position = "bottomleft", tiles = providers$OpenStreetMap.Mapnik ) # Despliegue del mapa leaflet_cantones ``` ### Gráfico de cantones con mayor cantidad de casos positivos ```{r} st_drop_geometry(sf_positivos_cantones_ultima_fecha) %>% mutate(canton = factor(canton, levels = canton)) %>% top_n(n = 10, wt = positivos) %>% plot_ly(x = ~ canton, y = ~ positivos, type = "bar", text = ~ positivos, textposition = 'auto', marker = list(color = color_positivos) ) %>% layout(yaxis = list(title = "Cantidad de casos positivos"), xaxis = list(title = ""), margin = list(l = 10, r = 10, b = 10, t = 10, pad = 2 ) ) ``` Casos activos ======================================================================= Row {data-height=10} ----------------------------------------------------------------------- ### **Última actualización de datos realizada el `r df_general_pais_ultima_fecha$FECHA` con base en los [datos publicados por el Ministerio de Salud de Costa Rica](http://geovision.uned.ac.cr/oges/)**. Row ----------------------------------------------------------------------- ### Casos activos {.value-box} ```{r} valueBox(value = paste(format(df_general_pais_ultima_fecha$activos, big.mark = ","), "", sep = " "), caption = "Total de casos activos", icon = icono_activos, color = color_activos ) ``` Row {data-width=400} ----------------------------------------------------------------------- ### Mapa de casos activos en cantones ```{r} paleta_activos <- colorBin(palette = "Reds", domain = sf_activos_cantones_ultima_fecha$activos, bins = 10 ) leaflet_cantones <- leaflet(sf_activos_cantones_ultima_fecha) %>% fitBounds(lng1 = -86, lng2 = -82, lat1 = 8, lat2 = 11) %>% addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>% addPolygons(fillColor = ~paleta_activos(activos), stroke=T, fillOpacity = 1, color="black", weight=0.2, opacity= 0.5, group = "Cantones", popup = paste("Provincia: ", sf_activos_cantones_ultima_fecha$provincia, "
", "Cantón: ", sf_activos_cantones_ultima_fecha$canton, "
", "Activos: ", sf_activos_cantones_ultima_fecha$activos ) ) %>% addLegend("bottomright", pal = paleta_activos, values = ~activos, title = "Casos activos", opacity = 1 ) %>% addLayersControl( baseGroups = c("OpenStreetMap"), overlayGroups = c("Cantones"), options = layersControlOptions(collapsed = TRUE) ) %>% addMiniMap( toggleDisplay = TRUE, position = "bottomleft", tiles = providers$OpenStreetMap.Mapnik ) # Despliegue del mapa leaflet_cantones ``` ### Gráfico de cantones con mayor cantidad de casos positivos ```{r} st_drop_geometry(sf_activos_cantones_ultima_fecha) %>% mutate(canton = factor(canton, levels = canton)) %>% top_n(n = 10, wt = activos) %>% plot_ly(x = ~ canton, y = ~ activos, type = "bar", text = ~ activos, textposition = 'auto', marker = list(color = color_activos) ) %>% layout(yaxis = list(title = "Cantidad de casos activos"), xaxis = list(title = ""), margin = list(l = 10, r = 10, b = 10, t = 10, pad = 2 ) ) ``` Casos recuperados ======================================================================= Row {data-height=10} ----------------------------------------------------------------------- ### **Última actualización de datos realizada el `r df_general_pais_ultima_fecha$FECHA` con base en los [datos publicados por el Ministerio de Salud de Costa Rica](http://geovision.uned.ac.cr/oges/)**. Casos fallecidos ======================================================================= Row {data-height=10} ----------------------------------------------------------------------- ### **Última actualización de datos realizada el `r df_general_pais_ultima_fecha$FECHA` con base en los [datos publicados por el Ministerio de Salud de Costa Rica](http://geovision.uned.ac.cr/oges/)**.